草庐IT

c++ - Xcode C++::架构 x86_64 的重复符号

全部标签

windows - 在 cmake 中强制构建 x64 位

我有一个不应在x86上以32位模式构建的CMake项目,而且我终其一生都想不出如何防止这种情况发生。现在,它出现cmake,默认情况下在Windows上采用32位构建。如何让我的CMake项目始终构建64位变体,无需将命令行参数传递给CMake?或者,如果CMake试图构建为32位,我该如何让CMake中止? 最佳答案 您可以将以下代码添加到我们的CMakeLists.txt以确保只允许x64构建:if(NOTCMAKE_SIZEOF_VOID_PEQUAL8)message("Pleaseswitchtox64build.")re

c++ - 如何使用 GetFinalPathNameByHandle 解析指向本地目录的符号链接(symbolic link)?

我有以下代码:std::wstringGetSymbolicLinkTarget(std::wstringconst&linkPath){TCHARpath[MAX_PATH];CAutoFilehFile=CreateFile(linkPath.c_str(),FILE_READ_EA,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,0,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS|FILE_ATTRIBUTE_REPARSE_POINT|FILE_FLAG_OPEN_REPARSE_POINT

linux - 如果在一台 x86 主机上运行 2 个 type-2 VMX hypervisor 会怎样?

在IntelVMX操作中,首先需要调用VMXON(VMXON_REGION)来开启CPU中的VMX,然后是VMPTRLD(VMCS_REGION)等我的问题来了。如果两个托管管理程序同时在一台X86主机上运行会怎样?第一个VMXON运行良好,但第二个VMXON将失败。并且2个hypervisor可能会调用VMPTRLD(VMCS_REGION_a)和VMPTRLD(VMCS_REGION_b),CPU中的当前VMCS已更改,它会导致另一个hypervisor崩溃还是它们可以共同-彼此存在?根据我对SDM的阅读,我认为它们不能共存,也许我又错过了一些重要的事情。请帮助澄清这一点。

windows - 在 Windows dockerfile 中转义美元符号

我想将一个文件复制到$PSHOME,所以我的dockerfile中有这个:COPYprofile.ps1"\$PSHOME\profile.ps1"不幸的是,这会在CWD名称“$PSHOME”中创建一个文件夹并将文件复制到那里。也许这是不可能的?$PSHOME是一个自动变量,而不是环境变量,所以它可能只能从PowerShellsession访问吗? 最佳答案 在Dockerfile中,您使用反斜杠(seethedocumentationformoredetails)对$进行转义。对于路径分隔符,您可以切换到正斜杠。但是,Docker

c++ - 是否有与 GetLastInputInfo/LASTINPUTINFO 等效的 64 位?

我们使用GetLastInputInfo并计算与GetTickCount64的结果的差来判断闲置。但是,GetLastInputInfo返回的滴答计数被写入到LASTINPUTINFO的成员dwTime中,它是一个DWORD,因此是一个无符号的32位整数,最大值为4294967295,相当于~49天。在正常运行时间比这更长的机器上,这当然会导致函数报告不正确的值。显然没有名为GetLastInputInfo64的函数,但也许是一个不同名称的函数? 最佳答案 我们使用了一种解决方法。仅使用GetLastInputInfo()的结果来检

windows - DLL 从其父级(加载程序)获取符号

我正在将程序移植到MSWindows。该程序使用动态加载的插件。插件在主程序中引用符号。如果不解析所有符号,我什至无法让DLL通过链接器。有办法解决吗? 最佳答案 (抱歉,我想在评论中要求澄清,但我是新手,不允许。)当您说插件“在主程序中引用符号”时,是指引用函数还是数据?另外,您使用的是什么语言/编译器?假设它只是关于函数,并且在C/C++中:可以从.EXE中导出一个函数,就像它是一个DLL一样。只需在.EXE中的函数定义前指定__declspec(dllexport)即可。编译.EXE时,应生成一个.LIB文件,然后您可以在链接

c - 在 Windows 上,_fseeki64 不会为大文件正确寻求 SEEK_END

我已将问题简化为以下基本函数,它应该简单地打印文件中的字节数。当我对一个83886080字节(80MB)的文件执行它时,它会打印出正确的数字。但是,对于4815060992字节(4.48GB)的文件,它会打印520093696,这太低了。这似乎与SEEK_END选项有关,因为如果我手动将指针设置为4815060992字节(例如_fseeki64(fp,(__int64)4815060992,SEEK_SET)_ftelli64确实返回了正确的位置。因此,解决方法是在不使用SEEK_END的情况下获取正确的文件大小,这是如何完成的?代码是在32位Windows系统(因此__int64、_

windows - 您可以在 Windows wave 音频输入中重复使用缓冲区吗?

我正在使用Windows多媒体API来记录和处理波形音频(waveInOpen和friend)。我想以循环方式使用少量缓冲区。我知道你应该在向设备添加缓冲区之前使用waveInPrepareHeader,并且你应该在wave设备有“将缓冲区返回给应用程序”,然后再释放它。我的问题是,我是否必须取消准备并重新准备才能重新使用缓冲区?或者我可以将以前使用过的缓冲区添加回设备吗?此外,我在哪个线程上执行此操作重要吗?我正在使用回调函数,它似乎是在属于音频系统的工作线程上调用的。我可以在回调期间在该线程上调用waveInUnprepareHeader、waveInPrepareHeader和w

为 32 位系统编译的 C# 程序和 C++ DLL 在 64 位系统上崩溃

我有一个使用DLL的C#应用程序,因为我需要C++来访问user32API的一些非托管功能(我不能为此使用PInvoke)。我为x86架构编译应用程序和DLL,并且在Windows732位上一切正常。现在的问题是,在Windows764位上,当我尝试使用依赖于DLL的功能时应用程序崩溃(但其余所有工作正常)。我怀疑这是一个32/64位问题,所以我尝试为x64架构重新编译DLL,现在我可以在运行时选择在x86和x64之间加载哪个DLL。但是当我尝试使用依赖于DLL的功能时它仍然崩溃(这在我尝试将64位DLL加载到32位程序中时很有意义)。我还没有尝试为x64编译应用程序和DLL。我怀疑它

windows - 我是否必须为 64 位 Windows 上的 Inno 设置留出余地?

我们有一个古老的VB6应用程序,有时需要更新并安装在我们用户的机器上。我们已经开始使用Inno,尤其是InnoIDE来制作setup.exe,以便将其安装到我们用户的PC上。但是,我想知道64位Windows和Inno设置。我们内部有几台机器,它们是64位版本的Windows7Professional。我已经使用Inno的设置成功地将我们的应用程序安装到32位WindowsXP机器上。我可以在我们的64位Windows7机器上使用相同的设置吗?它会自动将.exe放入C:\ProgramFiles(x86)\目录结构中,还是我必须为64位版本的Windows留出空间?